﻿'********************************************************************************
'*
'*       MD外観　　フォーム
'*
'*      File Name : frmStartCompletePlateCheck.vb
'*      Title     : MD外観検画面
'*      機能    　：MD外観
'*
'********************************************************************************
'----------------------------------<<修正履歴>>----------------------------------
'ﾊﾞｰｼﾞｮﾝ   日付       作業者        ｺﾒﾝﾄ
'--------- ---------- ------------ -----------------------------------------------
' V1.0.0   2016/07/12 S.Yu         新規作成
' V2.0.0   2017/06/22 E.Naoto      蘇州対応
' V3.0.0   2017/12/26 M.Sagawa     北京対応
' V4.0.0   2018/01/03 Miao         北京対応
' V4.0.0   2017/12/19 miao　　　　 北京対応（廃棄フレーム枚数の必須チェックを削除）
'********************************************************************************

Imports System.Text

Public Class frmStartCompletePlateCheck

    '前工程の計上データ（完了MSラックNo）
    Private Const COMP_RACK As String = "COMP MS RACK NO"
    '前工程の計上データ（廃棄フレーム数）
    Private Const FRAME As String = "DISPOSAL FRAME NUM"
    '前工程の計上データ（メッキ外観異常枚数）
    Private Const MOLD_ERR As String = "MOLD ERR NO"
    '前工程の計上データ（メッキ設備番号）
    Private Const MOLD_EQUIP As String = "MOLD EQUIP NO"

    '工程コード(A12J)
    Private Const PROC_CD_A12J As String = "A12J"
    '工程コード(A121)
    Private Const PROC_CD_A121 As String = "A121"
    '工程コード(A122)
    Private Const PROC_CD_A122 As String = "A122"

    '前工程のメッキ工程コード(S121)
    Private Const PRE_PROC_CD_S121 As String = "S121"
    '前工程のメッキ工程コード(S122)
    Private Const PRE_PROC_CD_S122 As String = "S122"
    '前工程のレーザーマーク工程コード(A54)
    Private Const PRE_PROC_CD_A54 As String = "A54"

    '>>2018/1/31 佐川 キャリア交換対応
    '実行モード
    '0:表示 1:着工 2:製造完成 3:計上完成
    Private execMode As String = VIEW
    '<<2018/1/31 佐川 キャリア交換対応

    '>>2018/2/13 大賀 サンプル数量対応
    Private AggregatePKG As String = String.Empty
    '>>2018/2/13 大賀 サンプル数量対応

    'タブコントロールの設定
    Public Overrides Sub setTabControl()
        '設備タブを表示不可にする
        TabPageEqp.Enabled = False
    End Sub

    '照合結果設定
    Public Overrides Sub SetPassScore()
        PASS_SCORE = 0
        ReDim m_iScore(PASS_SCORE - 1)
        m_iScore = {PASS_SCORE_WAIT_CHECK, PASS_SCORE_WAIT_CHECK, PASS_SCORE_WAIT_CHECK, PASS_SCORE_WAIT_CHECK, PASS_SCORE_WAIT_CHECK, PASS_SCORE_WAIT_CHECK}

    End Sub

    '照合結果クリア
    Public Overrides Sub InitualizeCollData()
        m_iScore = {PASS_SCORE_WAIT_CHECK, PASS_SCORE_WAIT_CHECK, PASS_SCORE_WAIT_CHECK, PASS_SCORE_WAIT_CHECK, PASS_SCORE_WAIT_CHECK, PASS_SCORE_WAIT_CHECK}
    End Sub

    'イベント設定
    Public Overrides Sub SetHandler()

        '完了MSラックNo
        AddHandler txt0302.KeyPress, AddressOf compMsRackNo_KeyPress
        AddHandler txt0402.KeyPress, AddressOf compMsRackNo_KeyPress
        AddHandler btnBarCode.Click, AddressOf btnMsRackNo_Click '2018/2/22 佐川 ラックNo入力動作を統一

        '廃棄フレーム数
        AddHandler lbl0501.Click, AddressOf TenKeyClick
        'メッキ外観異常枚数
        AddHandler lbl0601.Click, AddressOf TenKeyClick

        ' >> 20180710 佐川 ラックNo途入力改善
        AddHandler lbl0302.Click, AddressOf afterRackInputFocus
        AddHandler txt0302.Click, AddressOf afterRackInputFocus
        AddHandler lbl0402.Click, AddressOf afterRackInputFocus
        AddHandler txt0402.Click, AddressOf afterRackInputFocus
        ' << 20180710 佐川 ラックNo途入力改善

    End Sub
    Overrides Sub setKeyNoAfferControlFocus() 'add miaojf 2020/8/12 ver.60
        btnBarCode.PerformClick()
    End Sub
    'Lot Noでデータベースからデータを取得する
    Public Overrides Sub GetDataByIcTag()

        '初期化
        InputDataClear()

        'ICタグのデータで画面を設定する
        SetFromTag()
        If m_MoveInCheck = False Then Exit Sub
        'ロット部のセット
        setGridViewLot()

        If String.IsNullOrEmpty(IcTag.szUID) Then
            IcTag = LastTag
        End If

        '製造条件取得
        setJyokenData()

        '現物型式
        setDetailData()

        '>>2018/1/31 佐川 キャリア交換対応
        '前工程のラックNo設定
        txt0102.Text = IcTag.container1
        txt0202.Text = IcTag.container2
        '<<2018/1/31 佐川 キャリア交換対応

        If IcTag.Status = TagProcessStatus.Ready Then
            '着工前のデータ表示
            getPreInfoTabData()
        ElseIf IcTag.Status = TagProcessStatus.Processing Or IcTag.Status = TagProcessStatus.ManufComplete Then
            '着工中のデータ表示
            For Each dr In dtDetailData.Rows
                '>>2018/1/31 佐川 キャリア交換対応
                'If dr("MNF_CND_TAG").Equals(lbl0100.Tag) Then
                '    If dr("SEQ") = 1 Then
                '        '受入MSラックNo1
                '        txt0102.Text = dr("ACTUAL_MODEL")
                '    Else
                '        '受入MSラックNo2
                '        txt0202.Text = dr("ACTUAL_MODEL")
                '    End If

                'Else
                '<<2018/1/31 佐川 キャリア交換対応
                If DBNullTOblank(dr("MNF_CND_TAG")).Equals(lbl0200.Tag) Then 'UPD MIAO 2018/11/1
                    If dr("SEQ") = 1 Then
                        '完了MSラックNo1
                        txt0302.Text = DBNullTOblank(dr("ACTUAL_MODEL")) 'UPD MIAO 2018/11/1
                    Else
                        '完了MSラックNo2
                        txt0402.Text = DBNullTOblank(dr("ACTUAL_MODEL")) 'UPD MIAO 2018/11/1
                    End If
                ElseIf DBNullTOblank(dr("MNF_CND_TAG")).Equals(lbl0500.Tag) Then 'UPD MIAO 2018/11/1
                    '廃棄フレーム数
                    lbl0501.Text = DBNullTOblank(dr("ACTUAL_MODEL")) 'UPD MIAO 2018/11/1
                    'DEL 2018/1/4 苗修正　BEGIN　
                    'ElseIf dr("MNF_CND_TAG").Equals(lbl0500.Tag) Then
                    'DEL 2018/1/4 苗修正　END　
                    'ADD 2018/1/4 苗修正　BEGIN　
                ElseIf DBNullTOblank(dr("MNF_CND_TAG")).Equals(lbl0600.Tag) Then 'UPD MIAO 2018/11/1
                    'ADD 2018/1/4 苗修正　END　
                    'メッキ外観異常枚数
                    lbl0601.Text = DBNullTOblank(dr("ACTUAL_MODEL")) 'UPD MIAO 2018/11/1
                ElseIf DBNullTOblank(dr("MNF_CND_TAG")).Equals(lbl0170.Tag) Then 'UPD MIAO 2018/11/1
                    'メッキ設備番号
                    lbl0171.Text = DBNullTOblank(dr("ACTUAL_MODEL")) 'UPD MIAO 2018/11/1
                End If
            Next
        Else
            ' 画面の初期設定側でエラー処理をするのでここでは無処理
        End If

        '>>2018/2/13 大賀 サンプル数量対応
        If IcTag.Status = TagProcessStatus.Ready Then
            Dim Item = dtJyokenData.AsEnumerable().FirstOrDefault(Function(x) x("KOMOKUNAME").Equals(AGGREGATE_PKG))
            If Item IsNot Nothing Then
                AggregatePKG = Item("KOMOKUDATA")
            End If
            ' メッキ工程の装置Noを使用する
            lblSampleText.Text = m_cSamplingDef.getSamplingMessage(IcTag.szProcsCD, AggregatePKG, IcTag.plateEquipNo, IcTag.iInput.ToString())
        Else
            Dim getData = dtDetailData.AsEnumerable().FirstOrDefault(Function(x) lblSampleTitle.Tag.Equals(x("MNF_CND_TAG")))
            If getData IsNot Nothing Then
                lblSampleText.Text = getData("ACTUAL_MODEL")
            End If
        End If
        '<<2018/2/13 大賀 サンプル数量対応

        getHeadData()

        With m_dtMat
            If .Rows.Count > 0 Then
                '着完日時
                DisplayDate()
            Else
                If m_dtMat.Columns.Count > 0 Then
                    .Rows.Add()
                Else
                    .Columns.Add("BEGIN_TIME")
                    .Rows.Add()
                End If
            End If
        End With
        'ADD 苗 2018/1/5 BEGIN
        lblLostframe = lbl0501
        strLostFrame = lbl0500.Text
        'ADD 苗 2018/1/5 END

        'ADD 苗 2018/1/24 BEGIN
        'L_TAG_LOTDATAからIC廃棄のフレーム枚数を画面に設定
        lbl0501.Text = IcTag.iDisposalFrmNum
        'ADD 苗 2018/1/24 END

    End Sub

    '初期化、背景色の設定 
    Public Sub InputDataClear()

        '>>2018/1/30 佐川 キャリア交換対応
        execMode = VIEW
        '<<2018/1/30 佐川 キャリア交換対応

        'ロットタブの初期化
        clearActualModel()

        '受入MSラックNo1
        txt0102.Text = String.Empty
        '受入MSラックNo2
        txt0202.Text = String.Empty

        '完了MSラックNo1
        txt0302.Text = String.Empty
        txt0302.BackColor = NORMAL_INIT_COLOR
        lbl0302.BackColor = NORMAL_INIT_COLOR

        '完了MSラックNo2
        txt0402.Text = String.Empty
        txt0402.BackColor = NORMAL_INIT_COLOR
        lbl0402.BackColor = NORMAL_INIT_COLOR

        '廃棄フレーム数
        lbl0501.Text = String.Empty
        lbl0501.BackColor = NORMAL_INIT_COLOR

        'メッキ外観異常枚数
        lbl0601.Text = String.Empty
        lbl0601.BackColor = NORMAL_INIT_COLOR

        'メッキ設備番号
        lbl0171.Text = String.Empty
        lbl0171.BackColor = NORMAL_INIT_COLOR

        '工程コードがA12Jの場合は廃棄フレーム数を編集不可にする
        If lblProcessCD.Text.Equals(PROC_CD_A12J) Then
            lbl0501.Enabled = False
        ElseIf lblProcessCD.Text.Equals(PROC_CD_A121) Or lblProcessCD.Text.Equals(PROC_CD_A122) Then
            lbl0501.Enabled = True
        End If

        '開始作業者No
        txtOptNoStt.Text = String.Empty
        '終了作業者No
        txtOptNoEnd.Text = String.Empty

        '>>2018/2/15 大賀 サンプル数量対応 計上完成後のクリア漏れ
        lblSampleText.Text = String.Empty
        '<<2018/2/15 大賀 サンプル数量対応 計上完成後のクリア漏れ

    End Sub

    '画面データ保存（着工時）
    Public Overrides Function SaveEquipMat(ByRef szBeginTime As DateTime) As Boolean

        '>>2018/1/31 佐川 キャリア交換対応
        execMode = BEGIN
        '<<2018/1/31 佐川 キャリア交換対応

        If saveDetail(BEGIN) < 0 Then
            Return False
        Else
            Return True
        End If

        Return True
    End Function

    '画面データ保存（製造完成）
    Public Overrides Function SaveCompleteInfo(Optional status As ProcessStatus = ProcessStatus.ManufComplete) As Integer

        '>>2018/1/31 佐川 キャリア交換対応
        execMode = COMPLETE
        '<<2018/1/31 佐川 キャリア交換対応

        dtDBUpd.Clear()
        Return saveDetail(COMPLETE)
    End Function

    '画面データ保存（計上完成）
    Public Overrides Function SaveTotalInfo() As Integer

        '>>2018/1/31 佐川 キャリア交換対応
        execMode = TOTAL
        '<<2018/1/30 佐川 キャリア交換対応

        dtDBUpd.Clear()
        Return saveDetail(TOTAL)
    End Function

    '工程処理
    Private Function saveDetail(ByVal type As String) As Integer
        setLotData()
        Dim rowsCnt As Integer = dtDBUpd.Rows.Count
        Dim addIndex As Integer = 0

        '情報タブのデータセット
        '受入MSラックNo1
        dtDBUpd.Rows.Add()
        dtDBUpd.Rows(rowsCnt + addIndex)("MNF_CND_TAG") = lbl0100.Tag
        dtDBUpd.Rows(rowsCnt + addIndex)("MNF_CND_TAG_FLG") = 0
        dtDBUpd.Rows(rowsCnt + addIndex)("SEQ") = 1
        dtDBUpd.Rows(rowsCnt + addIndex)("ACTUAL_MODEL") = txt0102.Text
        addIndex += 1

        '受入MSラックNo2
        dtDBUpd.Rows.Add()
        dtDBUpd.Rows(rowsCnt + addIndex)("MNF_CND_TAG") = lbl0100.Tag
        dtDBUpd.Rows(rowsCnt + addIndex)("MNF_CND_TAG_FLG") = 0
        dtDBUpd.Rows(rowsCnt + addIndex)("SEQ") = 2
        dtDBUpd.Rows(rowsCnt + addIndex)("ACTUAL_MODEL") = txt0202.Text
        addIndex += 1

        If type <> BEGIN Then
            '完了MSラックNo1
            dtDBUpd.Rows.Add()
            dtDBUpd.Rows(rowsCnt + addIndex)("MNF_CND_TAG") = lbl0200.Tag
            dtDBUpd.Rows(rowsCnt + addIndex)("MNF_CND_TAG_FLG") = 0
            dtDBUpd.Rows(rowsCnt + addIndex)("SEQ") = 1
            dtDBUpd.Rows(rowsCnt + addIndex)("ACTUAL_MODEL") = txt0302.Text
            addIndex += 1

            '完了MSラックNo2
            dtDBUpd.Rows.Add()
            dtDBUpd.Rows(rowsCnt + addIndex)("MNF_CND_TAG") = lbl0200.Tag
            dtDBUpd.Rows(rowsCnt + addIndex)("MNF_CND_TAG_FLG") = 0
            dtDBUpd.Rows(rowsCnt + addIndex)("SEQ") = 2
            dtDBUpd.Rows(rowsCnt + addIndex)("ACTUAL_MODEL") = txt0402.Text
            addIndex += 1
            '1/30 苗 履歴に保存するようにコメントを解除する
            '廃棄フレーム数
            dtDBUpd.Rows.Add()
            dtDBUpd.Rows(rowsCnt + addIndex)("MNF_CND_TAG") = lbl0500.Tag
            dtDBUpd.Rows(rowsCnt + addIndex)("MNF_CND_TAG_FLG") = 0
            dtDBUpd.Rows(rowsCnt + addIndex)("SEQ") = 1
            dtDBUpd.Rows(rowsCnt + addIndex)("ACTUAL_MODEL") = lbl0501.Text
            addIndex += 1
        End If

        'メッキ外観異常枚数
        dtDBUpd.Rows.Add()
        dtDBUpd.Rows(rowsCnt + addIndex)("MNF_CND_TAG") = lbl0600.Tag
        dtDBUpd.Rows(rowsCnt + addIndex)("MNF_CND_TAG_FLG") = 0
        dtDBUpd.Rows(rowsCnt + addIndex)("SEQ") = 1
        dtDBUpd.Rows(rowsCnt + addIndex)("ACTUAL_MODEL") = lbl0601.Text
        addIndex += 1

        'メッキ設備番号
        dtDBUpd.Rows.Add()
        dtDBUpd.Rows(rowsCnt + addIndex)("MNF_CND_TAG") = lbl0170.Tag
        dtDBUpd.Rows(rowsCnt + addIndex)("MNF_CND_TAG_FLG") = 0
        dtDBUpd.Rows(rowsCnt + addIndex)("SEQ") = 1
        dtDBUpd.Rows(rowsCnt + addIndex)("ACTUAL_MODEL") = lbl0171.Text
        addIndex += 1

        '>>2018/2/13 大賀 サンプル数量対応
        'サンプル数量
        dtDBUpd.Rows.Add()
        dtDBUpd.Rows(rowsCnt + addIndex)("MNF_CND_TAG") = lblSampleTitle.Tag
        dtDBUpd.Rows(rowsCnt + addIndex)("MNF_CND_TAG_FLG") = CND_TAG_FLG_ELSE
        dtDBUpd.Rows(rowsCnt + addIndex)("SEQ") = 1
        dtDBUpd.Rows(rowsCnt + addIndex)("ACTUAL_MODEL") = lblSampleText.Text
        addIndex += 1
        '<<2018/2/13 大賀 サンプル数量対応

        Return m_cEquipMat.SaveDetail(lotNo, IcTag.szProcsCD, type,
                                      m_szTable, dtDBUpd, m_dtHeader,
                                      m_cIdohyo.EquipInfo.szEquipNo, serverTime)

    End Function

    '計上完成チェック処理
    Public Overrides Function EndCheck() As Boolean

        '完了MSラックNo1空白チェック
        If Not checkBlank(txt0302.Text, lbl0200.Text) Then
            checkColor(txt0302, False, lbl0302.Name)
            Return False
        End If
        'DEL 苗 2018/1/5 BEGIN
        '変更内容必須チェック不要
        '工程がA12Jの場合は廃棄フレーム数は編集不可のため、空白チェックを行わない
        'If Not lblProcessCD.Text.Equals(PROC_CD_A12J) Then
        '    '廃棄フレーム数空白チェック
        '    If Not checkBlank(lbl0501.Text, lbl0500.Text) Then
        '        lbl0501.BackColor = ERROR_INIT_COLOR
        '        Return False
        '    End If
        'End If

        ''メッキ外観異常枚数空白チェック
        'If Not checkBlank(lbl0601.Text, lbl0600.Text) Then
        '    lbl0601.BackColor = ERROR_INIT_COLOR
        '    Return False
        'End If
        'DEL 苗 2018/1/5 END
        ' B-Site送信情報に設定
        'MyBase.m_iCheck = Integer.Parse(lbl0601.Text)

        IcTag.iDisposalFrmNum = lbl0501.Text 'ADD 苗 2018/1/24
        Return True
    End Function

    '画面項目の表示切替
    Public Overrides Sub ConfScreenItem()
        If txtLotNo.TextLength > 0 Then
            If IcTag.Status = TagProcessStatus.Ready Then
                '着工待ち
                'バーコードボタン押下不可
                btnBarCode.Enabled = False
                txt0302.BackColor = NORMAL_INIT_COLOR
                lbl0302.BackColor = NORMAL_INIT_COLOR
                txt0402.BackColor = NORMAL_INIT_COLOR
                lbl0402.BackColor = NORMAL_INIT_COLOR
                '廃棄フレーム数を変更不可に
                lbl0501.Enabled = False
                'メッキ外観異常枚数を変更不可に
                lbl0601.Enabled = False
            Else
                '着工中
                'バーコードボタン押下可能
                btnBarCode.Enabled = True
                txt0302.BackColor = BARCODE_INIT_COLOR
                lbl0302.BackColor = BARCODE_INIT_COLOR
                txt0402.BackColor = BARCODE_INIT_COLOR
                lbl0402.BackColor = BARCODE_INIT_COLOR
                '工程コードがA12Jの場合は廃棄フレーム数を編集不可にする
                If lblProcessCD.Text.Equals(PROC_CD_A12J) Then
                    lbl0501.Enabled = False
                    'メッキ外観異常枚数を変更可能
                    lbl0601.Enabled = True
                ElseIf lblProcessCD.Text.Equals(PROC_CD_A121) Or lblProcessCD.Text.Equals(PROC_CD_A122) Then
                    lbl0501.Enabled = True
                    'メッキ外観異常枚数を変更不可
                    lbl0601.Enabled = False
                End If

            End If
        End If
    End Sub
    'DEL 2018/1/2 苗修正　BEGIN　
    'b-siteに計上せずに着完
    'Public Overrides Sub WorkStart()
    '    MyBase.JiSuccess()
    'End Sub

    '' 着工をスキップする場合、画面側コードでTrueを返す
    'Overrides Function IsJiSkiped() As Boolean
    '    Return True
    'End Function
    'DEL 2018/1/2 苗修正　END


    ' 情報タブの前工程データ取得
    Protected Sub getPreInfoTabData()

        '前工程のテーブル名
        Dim preProcTable As String = String.Empty
        '前工程の工程コード
        Dim preProcCode As String = lblProcessCD.Text
        'メッキ工程のコード
        Dim platProcCode As String = String.Empty

        'sf管理フラグのチェック
        '0:SF管理フラグ"1"が見つかっていない
        '1:前工程のSF管理フラグが"1"
        '2:設定完了 or 前工程のSF管理フラグ"1"が存在しない
        Dim sfCheck As Double = 0

        'メッキ工程取得チェック
        '0:未取得
        '1:取得完了
        Dim platCheck As Double = 0

        'A12J工程の値取得(A121,A122画面のみ)
        '0:未取得
        '1:取得完了
        Dim a12jCheck As Double

        'a54工程の値取得(A12J画面のみ)
        '0:未取得
        '1:取得完了
        Dim a54Check As Double

        '現在の画面の工程コードに合わせて取得チェックを行う
        If lblProcessCD.Text.Equals(PROC_CD_A12J) Then
            a12jCheck = 1
            a54Check = 1 'UPD 苗 2018/1/18 
        ElseIf lblProcessCD.Text.Equals(PROC_CD_A121) Or lblProcessCD.Text.Equals(PROC_CD_A122) Then
            'a54Check = 1
            a12jCheck = 1 'UPD 苗 2018/1/18 
        End If


        '工程を遡り画面設定値を取得する
        Do Until sfCheck >= 2 And platCheck >= 1 And a12jCheck >= 1 And a54Check >= 1
            '前工程の値取得
            Dim dtPreProc = m_cData.GetPreProc(lblLotNo.Text, preProcCode)

            '前工程が存在する場合は値取得を行う
            If dtPreProc.Rows.Count > 0 Then

                ' 前工程の結果テーブル名設定
                preProcTable = dtPreProc.Rows(0)("PROCTABLE")
                ' 前工程の工程コード設定
                preProcCode = dtPreProc.Rows(0)("PREPROC")
                'ADD 2018/1/2 苗修正　BEGIN　
                sfCheck = dtPreProc.Rows(0)("SF_MANAGED")
                'ADD 2018/1/2 苗修正　END　

                '>>2018/1/31 佐川 キャリア交換対応
                '前工程のSF管理フラグが0の場合
                'If sfCheck = 0 Then
                '    'SF管理フラグを確認する。
                '    If dtPreProc.Rows(0)("SF_MANAGED").Equals("1") Then
                '        'SF管理フラグが1の場合は次のループで値を取得するためチェックフラグを1にする
                '        sfCheck = 1
                '    End If

                'Else

                '    'SFチェックの値が1の場合は値を取得し画面に設定する。
                '    dtDetailData = New DataTable

                '    ' 前工程の計上データ取得
                '    dtDetailData = m_cEquipMat.GetDetailResult(lblLotNo.Text, preProcCode, TOTAL, preProcTable)
                '    For Each dr In dtDetailData.Rows
                '        '取得データが存在した場合は値を設定する。
                '        If dr(DB_WORK_RESULT_PHYSICALNAME_MNF_CND_TAG).Contains(COMP_RACK) Then
                '            '受入MSラックNoの設定
                '            If dr("SEQ") = 1 Then
                '                txt0102.Text = dr(DB_WORK_RESULT_PHYSICALNAME_ACTUAL_MODEL)
                '            Else
                '                txt0202.Text = dr(DB_WORK_RESULT_PHYSICALNAME_ACTUAL_MODEL)
                '            End If
                '        End If
                '    Next

                '    '前工程の値を設定した場合は、ループを抜けるためSFチェックを2にする
                '    sfCheck = 2
                'End If
                sfCheck = 2
                '<<2018/1/31 佐川 キャリア交換対応

                '前工程の値を取得し画面に設定する
                If preProcCode.Equals(PRE_PROC_CD_S121) Or preProcCode.Equals(PRE_PROC_CD_S122) Then
                    '「メッキ装置」を取得
                    Dim dtEquipNo = m_cEquipMat.getPreEquipId(lblLotNo.Text, preProcCode)
                    '取得値が存在したら値を設定する
                    If Not IsNothing(dtEquipNo) Then
                        lbl0171.Text = dtEquipNo
                    End If
                    'メッキ取得チェックを1(取得済み)にする
                    platCheck = 1

                ElseIf preProcCode.Equals(PROC_CD_A12J) Then
                    '「メッキ外観異常枚数」と「廃棄フレーム枚数」を取得
                    dtDetailData = New DataTable

                    ' 前工程の計上データ取得
                    dtDetailData = m_cEquipMat.GetDetailResult(lblLotNo.Text, preProcCode, TOTAL, preProcTable)
                    For Each dr In dtDetailData.Rows
                        '取得データが存在した場合は値を設定する。
                        'DEL 苗 2018/1/24 BEGIN
                        'If dr(DB_WORK_RESULT_PHYSICALNAME_MNF_CND_TAG).Contains(lbl0500.Tag) Then
                        '    '廃棄フレーム枚数の設定
                        '    lbl0501.Text = dr(DB_WORK_RESULT_PHYSICALNAME_ACTUAL_MODEL)
                        'DEL 苗 2018/1/24 END
                        If dr(DB_WORK_RESULT_PHYSICALNAME_MNF_CND_TAG).Contains(lbl0600.Tag) Then 'UPD 苗 2018/1/24
                            'メッキ外観異常枚数の設定
                            lbl0601.Text = dr(DB_WORK_RESULT_PHYSICALNAME_ACTUAL_MODEL)
                        End If
                    Next
                    'a12j取得チェックを1(取得済み)にする
                    a12jCheck = 1

                ElseIf preProcCode.Equals(PRE_PROC_CD_A54) Then
                    'DEL 苗 2018/1/24 BEGIN
                    'dtDetailData = New DataTable

                    '' 前工程の計上データ取得
                    'dtDetailData = m_cEquipMat.GetDetailResult(lblLotNo.Text, preProcCode, TOTAL, preProcTable)
                    'For Each dr In dtDetailData.Rows
                    '    '取得データが存在した場合は値を設定する。
                    '    If dr(DB_WORK_RESULT_PHYSICALNAME_MNF_CND_TAG).Contains(lbl0500.Tag) Then
                    '        '廃棄フレーム枚数の設定
                    '        lbl0501.Text = dr(DB_WORK_RESULT_PHYSICALNAME_ACTUAL_MODEL)
                    '    End If
                    'Next
                    'DEL 苗 2018/1/24 END
                    'メッキ外観異常枚数は固定値を設定する
                    lbl0601.Text = 0
                    a54Check = 1
                End If

            Else
                '前工程の値が無い場合はループを終了する
                sfCheck = 2
                platCheck = 1
                a12jCheck = 1
                a54Check = 1
            End If
        Loop

    End Sub


    '完了MSラックNo入力処理
    Protected Sub compMsRackNo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        'Protected Sub btnFrameAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        '頭に付いている'%'を消す
        Static Dim fIsPercentInput As Boolean = False
        If e.KeyChar = CChar("%") OrElse e.KeyChar = CChar("％") Then
            fIsPercentInput = True
            e.Handled = True
            Exit Sub
        End If
        If fIsPercentInput Then
            fIsPercentInput = False
            e.Handled = True
            Exit Sub
        End If

        '改行コードが入力された場合は、完了MSラックNoのチェックを行う
        If e.KeyChar = vbCr Then
            Dim txtData As TextBox = CType(sender, TextBox)
            txtData.Text = txtData.Text.ToUpper 'Add 苗 2018/4/10
            If compMsRackNo_Check(sender, e) Then
                txtData.Enabled = False
            End If
        End If
    End Sub

    '完了MSラックNoチェック
    Function compMsRackNo_Check(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim txtData As TextBox = CType(sender, TextBox)
        txtData.Text = txtData.Text.ToUpper 'Add 苗 2018/4/10
        Dim lblData As Label = txtData.Parent.Controls.Find(String.Format("lbl{0}02", txtData.Tag.ToString), False)(0)
        Dim idx As Integer = CInt(lblData.Name.Substring(3, 2))

        '空白チェック
        If txtData.Text.Equals("") And txtData.Tag.Equals("03") Then
            MsgBox(getMsgStr("MSG00020", lbl0200.Text))
            checkColor(sender, False, lblData.Name)
            Return False
        End If

        '完了MSラックNo1,2の重複チェック
        If txt0302.Text.Equals(txt0402.Text) Then
            MsgBox(getMsgStr("MSG00064", lbl0200.Text))
            If txtData.Tag.Equals("03") Then
                '>> 2018/2/22 佐川 ラックNo入力動作を統一
                lbl0302.BackColor = ERROR_INIT_COLOR
                txt0302.BackColor = ERROR_INIT_COLOR
                '<< 2018/2/22 佐川 ラックNo入力動作を統一
            Else
                '>> 2018/2/22 佐川 ラックNo入力動作を統一
                lbl0402.BackColor = ERROR_INIT_COLOR
                txt0402.BackColor = ERROR_INIT_COLOR
                '<< 2018/2/22 佐川 ラックNo入力動作を統一
            End If
            checkColor(sender, False, lblData.Name)
            txtData.SelectAll() '2018/2/22 佐川 ラックNo入力動作を統一
            Return False
        End If

        '>>20180313 大賀 搬送容器桁数チェックを共通化
        If Not txtData.Text.Equals("") Then
            ' ラックNoの桁数チェック
            If Not isCheckCaseLength(txtData, MS_RACK_CASE_NO_LENGTH, lblData) Then
                Return False
            End If
        End If
        '<<20180313 大賀 搬送容器桁数チェックを共通化

        '完了MSラックNoが前工程との一致チェック
        If Not (txtData.Text.Equals(txt0102.Text) Or txtData.Text.Equals(txt0202.Text)) Then
            MsgBox(getMsgStr("MSG00089", lbl0200.Text))
            '>> 2018/2/22 佐川 ラックNo入力動作を統一
            txtData.BackColor = ERROR_INIT_COLOR
            lblData.BackColor = ERROR_INIT_COLOR
            txtData.SelectAll()
            '<< 2018/2/22 佐川 ラックNo入力動作を統一
            Return False
        End If

        If txtData.Tag.Equals("03") Then
            txt0402.Enabled = True
            txt0402.Focus()
            txt0402.BackColor = FOCUS_INIT_COLOR
            lbl0402.BackColor = FOCUS_INIT_COLOR
        End If
        checkColor(sender, True, lblData.Name)
        Return True

    End Function


    'テンキー表示処理
    Private Overloads Sub TenKeyClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
        tenkeyChkMatchFlg = False
        MyBase.TenKeyClick(sender, e)
        btnDot.Enabled = False
        btnBar.Enabled = False
    End Sub

    '計上完成正常時の画面初期化
    Protected Overrides Sub initializForm()
        MyBase.initializForm()
        InputDataClear()
    End Sub
    'ADD 苗 2018/1/24 BEGIN
    '製造完成
    Protected Overrides Function ManufCompCheck() As Boolean
        Return EndCheck()
    End Function
    'ADD 苗 2018/1/24 END

    '完了MSラックNoタブキー対応
    Private Sub compMsRackNo_PreviewKeyDown(ByVal sender As Object, ByVal e As PreviewKeyDownEventArgs) Handles txt0302.PreviewKeyDown, txt0402.PreviewKeyDown
        'タブキーが押下された場合は、改行コードと見なし処理を行う
        If e.KeyCode = Keys.Tab Then
            e.IsInputKey = True
            compMsRackNo_KeyPress(sender, New KeyPressEventArgs(vbCr))
        End If
    End Sub

    '>> 2018/1/31 佐川 キャリア交換対応
    'IcTag保存内容設定
    Protected Overrides Sub icTagDataSet()
        '製造完成、計上完成時は画面入力値の値を設定する。
        If execMode.Equals(COMPLETE) Or execMode.Equals(TOTAL) Then
            IcTag.container1 = txt0302.Text
            IcTag.container2 = txt0402.Text
            IcTag.container3 = String.Empty
            IcTag.container4 = String.Empty
            IcTag.container5 = String.Empty
        Else
            '初期値をそのまま保存するため、変更しない。
        End If
    End Sub
    '<<2018/1/31 佐川 キャリア交換対応


    '>> 2018/2/22 佐川 ラックNo入力動作を統一
    ' ラックNo用バーコードクリック
    Protected Sub btnMsRackNo_Click(ByVal sender As Object, ByVal e As EventArgs)

        ' 入力フォーカスの設定
        Dim btn As Button = CType(sender, Button)
        Dim txtData As TextBox = btn.Parent.Controls.Find(String.Format("txt{0}02", btn.Tag.ToString), False)(0)
        Dim lblData As Label = txtData.Parent.Controls.Find(String.Format("lbl{0}02", txtData.Tag.ToString), False)(0)
        Dim textData2 As TextBox = btn.Parent.Controls.Find(String.Format("txt0{0}02", (CInt(btn.Tag) + 1).ToString), False)(0)
        Dim lblData2 As Label = txtData.Parent.Controls.Find(String.Format("lbl0{0}02", (CInt(btn.Tag) + 1).ToString), False)(0)

        txtData.Text = String.Empty
        textData2.Text = String.Empty
        txtData.Enabled = True
        txtData.Focus()
        txtData.SelectAll()
        txtData.BackColor = FOCUS_INIT_COLOR
        lblData.BackColor = FOCUS_INIT_COLOR
        textData2.BackColor = FOCUS_INIT_COLOR
        lblData2.BackColor = FOCUS_INIT_COLOR

    End Sub

    '<< 2018/2/22 佐川 ラックNo入力動作を統一

    ' >> 20180307 大賀 作業者入力確定時に次の入力にフォーカスを移動する
    ''' <summary>
    ''' 作業者入力後のフォーカスを各画面で設定する
    ''' 各画面でオーバーライドされない場合はTabIndex順に移動する
    ''' </summary>
    ''' <param name="inputType">作業者入力タイプ</param>
    ''' <param name="nowControl">対象コントロール</param>
    Protected Overrides Sub setNextFocus(ByVal inputType As OPERATER_INPUT_TYPE, ByVal nowControl As Control)
        If m_ProcessStatus <> ProcessStatus.Ready Then  ' ロット未入力の場合は処理しない
            If IcTag.Status = TagProcessStatus.Ready Then   ' 未着工
            ElseIf IcTag.Status = TagProcessStatus.Processing Then  ' 着工中
                If inputType = OPERATER_INPUT_TYPE.END_OPE Then
                    tabBase.SelectedTab = TabPageSp ' タブの移動
                    If String.IsNullOrEmpty(txt0302.Text) Then  ' 未入力の場合に入力可能にする
                        btnBarCode.PerformClick()  ' バーコード入力ボタンを押す
                        Exit Sub
                    End If
                End If
            ElseIf IcTag.Status = TagProcessStatus.ManufComplete Then ' 製造完成

            End If
        End If
        ' 各画面個別のフォーカスに移動しない場合は次のTabIndexに移動
        SelectNextControl(nowControl, True, True, True, True)
    End Sub
    ' << 20180307 大賀 作業者入力確定時に次の入力にフォーカスを移動する

    ' >> 20180710 佐川 ラックNo途入力改善
    Public Sub afterRackInputFocus(ByVal sender As Object, ByVal e As System.EventArgs)
        '着工中のみ選択可能にする
        If IcTag.Status = TagProcessStatus.Processing Then
            MyBase.rackInputFocus(sender, e)
        End If
    End Sub
    ' << 20180710 佐川 ラックNo途入力改善

End Class
